package xyz.yohao.flow.bean.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import xyz.yohao.flow.common.constants.EntityConstants;

import java.io.Serializable;
import java.util.Date;

@Data
@TableName("wf_instance")
public class WorkflowInstance implements Serializable {
    private static final Long serialVersionUID = 1L;

    /*
     * 主键id
     */
    @TableId
    public Long id;

    /**
     * 标题
     */
    public String title;
    /**
     * 模版id
     */
    public Long templateId;
    /**
     * 表单id
     */
    public Long formId;

    /**
     * 实例编码
     */
    public String instanceCode;

    /**
     * 当前节点id
     */
    public String activityId;
    /**
     * 当前节点名称
     */
    public String activityName;
    /**
     * 上一个节点id
     */
    public String previousId;

    /**
     * 执行人id集合 按照逗号分割，并且以逗号分割结束
     */
    public String makerList;

    /**
     * 执行人名称 按照逗号分割，并且以逗号分割结束
     */
    public String makerNameList;

    /**
     * 流程是否结束
     */
    public Boolean finished;

    /**
     * 流程状态
     */
    public Integer status;

    /**
     * 流程json内容
     */
    public String flowContent;
    /**
     * 流程json内容
     */
    public String runFlowContent;

    /**
     * 申请人id
     */
    public String applyUserId;

    /**
     * 申请人名称
     */
    public String applyUserName;

    /**
     * 申请用户部门
     */
    public String applyUserDeptCode;

    /**
     * 重新提交后，从哪个节点开始审批
     */
    public String reSubmitBackNodeId;

    /**
     * 完成时间
     */
    @DateTimeFormat(pattern = EntityConstants.ENTITY_TIME_FORMAT)
    public Date finishTime;

    /**
     * 单据编号
     */
    public String BillCode;

    /**
     * 是否删除
     */
    public Integer isDeleted;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = EntityConstants.ENTITY_TIME_FORMAT)
    public Date createTime;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = EntityConstants.ENTITY_TIME_FORMAT)
    public Date updateTime;

    /**
     * 租户id
     */
    public Long tenantId;
}
